"""
Custom Exceptions for ArXiv Scraper Service

Comprehensive exception hierarchy for better error handling and debugging.
"""


class ScraperServiceError(Exception):
    """Base exception for all scraper service errors."""
    pass


class ConfigurationError(ScraperServiceError):
    """Raised when there are configuration issues."""
    pass


class NetworkError(ScraperServiceError):
    """Raised when network operations fail."""
    pass


class RateLimitError(ScraperServiceError):
    """Raised when rate limiting issues occur."""
    pass


class DatabaseError(ScraperServiceError):
    """Raised when database operations fail."""
    pass


class ScrapingError(ScraperServiceError):
    """Raised when scraping operations fail."""
    pass


class ProcessingError(ScraperServiceError):
    """Raised when paper processing fails."""
    pass


class StateError(ScraperServiceError):
    """Raised when state management fails."""
    pass


class SchedulingError(ScraperServiceError):
    """Raised when scheduling operations fail."""
    pass


class ValidationError(ScraperServiceError):
    """Raised when data validation fails."""
    pass


class AuthenticationError(ScraperServiceError):
    """Raised when authentication fails."""
    pass


class AuthorizationError(ScraperServiceError):
    """Raised when authorization fails."""
    pass


class TimeoutError(ScraperServiceError):
    """Raised when operations timeout."""
    pass


class ResourceError(ScraperServiceError):
    """Raised when resource allocation fails."""
    pass


class DataIntegrityError(ScraperServiceError):
    """Raised when data integrity checks fail."""
    pass